home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_01_07 / 1n07046a < prev    next >
Text File  |  1990-11-05  |  7KB  |  157 lines

  1.  
  2.  
  3. /**********************************************************
  4. * NETBIOS.H -- Net BIOS definitions
  5. *
  6. *     Copyright 1990 Tom Jensen
  7. **********************************************************/
  8.  
  9. /* Net Control Block commands */
  10.  
  11. #define NET_CALL       0x10  /* Call to establish session */
  12. #define NET_LISTEN     0x11  /* Listen for session request*/
  13. #define NET_HANGUP     0x12  /* Close session             */
  14. #define NET_SEND       0x14  /* Send data                 */
  15. #define NET_RECV       0x15  /* Receive data              */
  16. #define NET_RECV_ANY   0x16  /* Receive data from any     */
  17.                              /* session                   */
  18. #define NET_CHAIN_SEND 0x17  /* Send multiple data blocks */
  19.  
  20. #define NET_SEND_DGRAM 0x20  /* Send datagram             */
  21. #define NET_RECV_DGRAM 0x21  /* Receive datagram          */
  22. #define NET_SEND_BROAD 0x22  /* Send broadcast datagram   */
  23. #define NET_RECV_BROAD 0x23  /* Receive broadcast datagram*/
  24.  
  25. #define NET_ADD_NAME   0x30  /* Add local network name    */
  26. #define NET_DEL_NAME   0x31  /* Delete local network name */
  27. #define NET_RESET      0x32  /* Reset adapter             */
  28. #define NET_ADAPT_STAT 0x33  /* Query adapter status      */
  29. #define NET_SES_STAT   0x34  /* Query session status      */
  30. #define NET_CANCEL     0x35  /* Cancel command            */
  31. #define NET_ADD_GROUP  0x36  /* Add group name            */
  32.  
  33. #define NET_UNLINK      0x70  /* Drop session w/RPL host  */
  34. #define NET_SEND_NOACK  0x71  /* Send without             */
  35.                               /* acknowledgement          */
  36. #define NET_CHAIN_NOACK 0x72  /* Send multiple blocks     */
  37.                               /* without acknowledgement  */
  38.  
  39.  
  40. /* No wait (interrupt driven) option */
  41. /* must be ORed with NCB command     */
  42.  
  43. #define NET_NOWAIT  0x80
  44.  
  45. /* NETBIOS return codes */
  46.  
  47. #define NB_OK       0x00    /* Command completed          */
  48.                             /* successfully               */
  49. #define NB_BUFLEN   0x01    /* Invalid buffer length      */
  50. #define NB_BADCMD   0x03    /* Invalid command            */
  51. #define NB_TIMEOUT  0x05    /* Command timed out          */
  52. #define NB_INCOMP   0x06    /* Data larger than buffer    */
  53. #define NB_NOACKX   0x07    /* Local No-Ack command       */
  54.                             /* failed                     */
  55. #define NB_SESINAC  0x08    /* Invalid session number     */
  56. #define NB_NORES    0x09    /* Not enough space for       */
  57.                             /* session                    */
  58. #define NB_SESCLOS  0x0A    /* Session closed             */
  59. #define NB_CANCELED 0x0B    /* Command canceled           */
  60. #define NB_DUPLNAM  0x0D    /* Duplicate local name       */
  61. #define NB_LNAMFULL 0x0E    /* Name table is full         */
  62. #define NB_ACTVLNAM 0x0F    /* Name to delete has active  */
  63.                             /* session, name de-registered*/
  64. #define NB_SESFULL  0x11    /* Local session table full   */
  65. #define NB_BADOPEN  0x12    /* No Listen cmd on remote    */
  66. #define NB_BADNNUM  0x13    /* Invalid name number        */
  67. #define NB_NONAME   0x14    /* Call name not found        */
  68. #define NB_BADNAME  0x15    /* Name not found or illegal  */
  69.                             /* 1st character, * or 0x00   */
  70. #define NB_DUPRNAM  0x16    /* Duplicate remote name      */
  71. #define NB_NAMEDEL  0x17    /* Name deleted, OK           */
  72. #define NB_SESABEND 0x18    /* Session ended abnormally   */
  73. #define NB_DUPNAMES 0x19    /* Duplicate names on network */
  74. #define NB_BADPROTO 0x1A    /* Packet received using      */
  75.                             /* incompatible protocol      */
  76. #define NB_BUSY     0x21    /* Interface busy             */
  77. #define NB_MAXCMDS  0x22    /* Too many cmds outstanding  */
  78. #define NB_BADLANA  0x23    /* Invalid LanaNum field      */
  79. #define NB_COMPCAN  0x24    /* Attempted Cancel of command*/
  80.                             /* completed or non-existant  */
  81. #define NB_RSRVADDN 0x25    /* Reserve name used for Add  */
  82.                             /* Group Name                 */
  83. #define NB_BADCAN   0x26    /* Invalid command to cancel  */
  84.  
  85. /* Other errors represent unusual conditions or adapter   */
  86. /* malfunctions.  Most are system dependent.              */
  87.  
  88. #define NB_CMDPEND  0xFF    /* Command still pending      */
  89.  
  90. /* Far Address Union */
  91.  
  92. struct segofs
  93. {
  94.   unsigned Ofs;               /* Address offset  */
  95.   unsigned Seg;               /* Address segment */
  96. };
  97.  
  98. union MemAddr
  99. {
  100.   void far      *pfar;        /* Far address            */
  101.   struct segofs SegOfs;       /* Segment/offset address */
  102. };
  103.  
  104. /* Net Control Block structure */
  105.  
  106. struct NcbData
  107. {
  108.   unsigned char Command;      /* NETBIOS command         */
  109.   unsigned char RetCode;      /* Return code             */
  110.   unsigned char LSN;          /* Local session number    */
  111.   unsigned char Num;          /* Local name number       */
  112.   union MemAddr Buffer;       /* Buffer address          */
  113.   unsigned int  Length;       /* Buffer length           */
  114.   unsigned char CallName[16]; /* Name of target node     */
  115.   unsigned char Name[16];     /* Name of source node     */
  116.   unsigned char RTO;          /* Receive timeout value   */
  117.   unsigned char STO;          /* Send timeout value      */
  118.   union MemAddr Post;         /* Post routine address    */
  119.   unsigned char LanaNum;      /* LAN adapter number      */
  120.   unsigned char CmdCplt;      /* Command complete status */
  121.   unsigned char Reserve[14];  /* Reserved for NETBIOS    */
  122. };
  123.  
  124. /* NETBIOS Library prototypes */
  125.  
  126. void     NbNcbInit (struct NcbData *ncb, unsigned char cmd,
  127.          char *lnam, char *fnam);
  128. void     NbExpandName (char *buffer, char *name);
  129. unsigned NbAddName (struct NcbData *ncb, char *lnam);
  130. unsigned NbDelName (struct NcbData *ncb, char *lnam);
  131. unsigned NbListen (struct NcbData *ncb, char *lnam,
  132.          char *fnam, unsigned char *ses);
  133. unsigned NbPostListen (struct NcbData *ncb, char *lnam,
  134.          char *fnam);
  135. unsigned NbOpenSession (struct NcbData *ncb, char *lnam,
  136.          char *fnam, unsigned char *ses);
  137. unsigned NbCloseSession (struct NcbData *ncb, char *lnam,
  138.          char *fnam, unsigned char ses);
  139. unsigned NbCancel (struct NcbData *ncb);
  140. unsigned NbSessionStatus (struct NcbData *ncb, char *lnam,
  141.          char *fnam, char *buffer, int bufsiz);
  142. unsigned NbSendData (struct NcbData *ncb, char *lnam,
  143.          char *fnam, char *buffer, int bufsiz,
  144.          unsigned char ses);
  145. unsigned NbReceiveData (struct NcbData *ncb, char *lnam,
  146.          char *fnam, char *buffer, int bufsiz,
  147.          unsigned char ses);
  148.  
  149. int      NetActive (void);
  150. int      NbNetActive (void);
  151. int      LocalName (char *name);
  152. unsigned DosVersion (void);
  153.  
  154. unsigned NBCALL (struct NcbData *ncb);
  155. void     SETPOSTADDR (void far *post);
  156.  
  157.